﻿// 功能：扩展的列表控件。
// 描述：
// 作者：温伟鹏
// 日期：2010/9/9 16:16:19

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using MeizuSDK.Drawing;

namespace MeizuSDK.Presentation
{
    /// <summary>
    /// 扩展的列表控件。
    /// </summary>
    public class ListBoxEx : ListBox
    {
        #region 私有变量
        /// <summary>
        /// 列表项选择模式
        /// </summary>
        private ListBoxSelectMode selectMode;
        /// <summary>
        /// 列表项集合
        /// </summary>
        private ListItemExCollection items;
        #endregion

        #region 公共属性
        /// <summary>
        /// 获取或设置一个值，指示是否由用户自定义绘制控件
        /// </summary>
        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool OwnerDraw
        {
            get
            {
                return base.OwnerDraw;
            }
            set
            {
                base.OwnerDraw = value;
            }
        }
        /// <summary>
        /// 获取或设置一个值，指示是否由用户自定义绘制列表项
        /// </summary>
        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool OwnerDrawItem
        {
            get
            {
                return base.OwnerDrawItem;
            }
            set
            {
                base.OwnerDrawItem = value;
            }
        }
        /// <summary>
        /// 获取或设置列表项选择方式
        /// </summary>
        public ListBoxSelectMode SelectMode
        {
            get
            {
                return this.selectMode;
            }
            set
            {
                if (value != this.selectMode)
                {
                    this.selectMode = value;

                    Invalidate();
                    Update();
                }
            }
        }
        /// <summary>
        /// 获取或设置列表当前选中的项索引
        /// </summary>
        public override int SelectedIndex
        {
            get
            {
                return base.SelectedIndex;
            }
            set
            {
                throw new NotImplementedException();
            }
        }
        /// <summary>
        /// 获取列表控件的列表项集合
        /// </summary>
        public new ListItemExCollection Items
        {
            get{
                if(this.items == null)
                {
                    this.items = new ListItemExCollection(this);
                }
                return this.items;
            }
        }
        /// <summary>
        /// 获取或设置描述性文本的字体
        /// </summary>
        public Font DescriptionFont
        {
            get;
            set;
        }
        /// <summary>
        /// 获取或设置附言1的字体
        /// </summary>
        public Font PostScript1Font
        {
            get;
            set;
        }
        /// <summary>
        /// 获取或设置附言2的字体
        /// </summary>
        public Font PostScript2Font
        {
            get;
            set;
        }
        /// <summary>
        /// 获取或设置描述文本的前景色
        /// </summary>
        public Color DescriptionForeColor
        {
            get;
            set;
        }
        /// <summary>
        /// 获取或设置附言1的前景色
        /// </summary>
        public Color PostScript1ForeColor
        {
            get;
            set;
        }
        /// <summary>
        /// 获取或设置附言2的前景色
        /// </summary>
        public Color PostScript2ForeColor
        {
            get;
            set;
        }
        #endregion

        #region 构造函数
        /// <summary>
        /// 构建扩展列表框对象
        /// </summary>
        public ListBoxEx()
            : base()
        {
            OwnerDraw = false;
            OwnerDrawItem = true;
        }
        #endregion

        #region 函数

        #endregion
    }
}
